/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package newpackage;

/**
 *
 * @author user
 */
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
/** * Origin of code: Apache Avalon (Excalibur)
 * 
 * @author Peter Donald
 * @author Jeff Turner
 * @author Matthew Hawthorne
 * @author Stephen Colebourne
 * @author Gareth Davis
 * @version CVS $Revision$ $Date$*/
public class CompareFileContents {
  /**
   * Compare the contents of two Streams to determine if they are equal or not.
   * 
   * This method buffers the input internally using <code>BufferedInputStream</code> if they are
   * not already buffered.
   * 
   * @param input1
   *            the first stream
   * @param input2
   *            the second stream
   * @return true if the content of the streams are equal or they both don't exist, false
   *         otherwise
   * @throws NullPointerException
   *             if either input is null
   * @throws IOException
   *             if an I/O error occurs
   */
  public static boolean contentEquals(InputStream input1, InputStream input2) throws IOException
  {
    if (!(input1 instanceof BufferedInputStream))
    {
      input1 = new BufferedInputStream(input1);
    }
    if (!(input2 instanceof BufferedInputStream))
    {
      input2 = new BufferedInputStream(input2);
    }

    int ch = input1.read();
    while (-1 != ch)
    {
      int ch2 = input2.read();
    
      if (ch != ch2)
      {
        return false;
      }
      
      ch = input1.read();
    }

    int ch2 = input2.read();
    return (ch2 == -1);
  }
}